home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / CRS / crs47.d81 / cbmhck4b.sfx / cbmhack.4-4 < prev   
Text File  |  1990-02-12  |  17KB  |  372 lines

  1.  
  2. ╘HIS NEXT LINE IS WHERE ╔ SET THE DEFAULT SELECTION STATUS, TRANSLATION TYPE,
  3. AND ├┬═ FILE TYPE FOR THE ═╙-─╧╙ FILES.  ┘OU CAN CHANGE THESE DEFAULTS SIMPLY
  4. BY OVERTYPING THE STRING IN   (  ⁿ  ⁿⁿⁿ  ⁿⁿⁿ  ) THE "╓" LOCATIONS.
  5.                                  ╓  ╓╓╓  ╓╓╓
  6. 260 D$=RIGHT$(" "+STR$(DL),3)+"     ASC  SEQ  " : REM ** DEFAULT SEL/TR/FT **
  7. 270 A$="" : FORI=0TO10 : A$=A$+CHR$(PEEK(DP+I)) : NEXT
  8. 280 A$=LEFT$(A$,8)+"  "+RIGHT$(A$,3)
  9. 290 PRINT DL; A$
  10. 300 D$=D$+A$+"  "
  11. 310 CL(DL)=PEEK(DP+26)+256*PEEK(DP+27)
  12. 320 SZ=PEEK(DP+28)+256*PEEK(DP+29)+65536*PEEK(DP+30)
  13. 330 DI$(DL)=D$+RIGHT$("    "+STR$(SZ),6)
  14. 340 SZ(DL)=SZ
  15. 350 NEXT DP
  16. 360 RETURN
  17. 370 :
  18. 371 REM ** REPORT MS-DOS DISK ERROR **
  19. 380 PRINT CHR$(18);"MS-DOS DISK ERROR #";MID$(STR$(E),2);
  20. 390 PRINT " ($";MID$(HEX$(E),3);"), PRESS KEY.";CHR$(146)
  21. 400 GETKEY A$ : RETURN
  22. 410 :
  23. 411 REM ** SCREEN HEADING **
  24. 420 PRINTCHR$(147);"MS-DEV=";MID$(STR$(DV),2);"    MS-TYPE=";DT$;
  25. 430 PRINT"    CBM-DEV=";MID$(STR$(CD),2):PRINT
  26. 440 RETURN
  27. 450 :
  28. 451 REM ** SCREEN FOOTING **
  29. 460 PRINT IL$;"D=DIRECTORY  M=MS-DEV  F=CBM-DEV Q=QUIT"
  30. 470 PRINT"T=TOGGLE-COLUMN, C=COPY-FILES, +/- PAGE";
  31. 480 RETURN
  32. 490 :
  33. 491 REM ** MAIN ROUTINE **
  34. 500 T=1 : C=0
  35. 510 R=0
  36. 520 GOSUB 420
  37. 530 PRINT "NUM  S  TRN  TYP  FILENAME  EXT  LENGTH"
  38. 540 PRINT "---  -  ---  ---  --------  ---  ------"
  39. 550 GOSUB 460
  40. 560 B=T+17 : IF B>DL THEN B=DL
  41. 570 PRINT FL$;: IF T>DL THEN 590
  42. 580 FOR I=T TO B : PRINT DI$(I) : NEXT
  43. 590 IF DL=0 THEN PRINT CHR$(18);"<NO FILES>";CHR$(146)
  44. 600 IF DL=0 THEN 660
  45. 610 PRINT LEFT$(IL$,R+5);CHR$(18);
  46. 620 ON C+1 GOTO 630,640,650
  47. 630 PRINT SPC(4);MID$(DI$(T+R),5,3) : GOTO 660
  48. 640 PRINT SPC(7);MID$(DI$(T+R),8,5) : GOTO 660
  49. 650 PRINT SPC(12);MID$(DI$(T+R),13,5) : GOTO 660
  50. 660 GETKEY A$
  51.  
  52. ╧H SHI^╚OOT.  ╔ SCREWED UP THE FOLLOWING LINE IN THE STRING AFTER THE
  53. "+CHR$(13)+" PART.  ┘OU'LL NOTICE THAT ╔ HAVE AVOIDED PUTTING CURSOR CONTROL
  54. CHARACTERS INTO THE STRINGS EVERYWHERE ELSE, BUT ╔ FORGOT TO DO THAT HERE.
  55. ╘HE "√STUFF}" SHOULD BE ├URSOR╒P, ├URSOR─OWN, ├URSOR╠EFT, ├URSOR╥IGHT,
  56. ├URSOR╚OME, AND ├URSOR├╠╥ CONTROL CHARACTERS, RESPECTIVELY.  ╘HESE CHARACTERS
  57. GIVE THE INDEX FOR THE "ON" STATEMENT BELOW.
  58.  
  59. 670 I=INSTR("DMFTC+-Q "+CHR$(13)+"√STUFF}",A$)
  60. 680 PRINT LEFT$(IL$,R+5);DI$(T+R)
  61. 690 IF I=0 THEN 600
  62. 700 ONIGOTO760,1050,1110,950,1150,1000,1020,730,860,860,770,790,810,830,850,500
  63. 710 STOP
  64. 720 :
  65. 721 REM ** VARIOUS MENU OPTIONS **
  66. 730 PRINT CHR$(147);"HAVE AN AWESOME DAY."
  67. 740 END
  68. 760 GOSUB 420 : GOSUB 140 : GOTO 500
  69. 770 R=R-1 : IF R<0 THEN R=B-T
  70. 780 GOTO 600
  71. 790 R=R+1 : IF T+R>B THEN R=0
  72. 800 GOTO 600
  73. 810 C=C-1 : IF C<0 THEN C=2
  74. 820 GOTO 600
  75. 830 C=C+1 : IF C>2 THEN C=0
  76. 840 GOTO 600
  77. 850 R=0 : C=0 : GOTO 600
  78. 860 IF DL=0 THEN 600
  79. 870 X=T+R : ON C+1 GOSUB 890,910,930
  80. 880 PRINT LEFT$(IL$,R+5);DI$(X) : GOTO 600
  81. 890 IF MID$(DI$(X),6,1)=" " THEN X$="*" :ELSE X$=" "
  82. 900 MID$(DI$(X),6,1)=X$ : RETURN
  83. 910 IF MID$(DI$(X),9,1)="A" THEN X$="BIN" :ELSE X$="ASC"
  84. 920 MID$(DI$(X),9,3)=X$ : RETURN
  85. 930 IF MID$(DI$(X),14,1)="S" THEN X$="PRG" :ELSE X$="SEQ"
  86. 940 MID$(DI$(X),14,3)=X$ : RETURN
  87. 950 IF DL=0 THEN 600
  88. 960 FOR X=1 TO DL
  89. 970 ON C+1 GOSUB 890,910,930
  90. 980 NEXT X
  91. 990 GOTO 520
  92. 1000 IF B=DL THEN T=1 : GOTO 510
  93. 1010 T=T+18 : GOTO 510
  94. 1020 IF T=1 THEN T=DL-(DL-INT(DL/18)*18)+1 : GOTO 510
  95. 1030 T=T-18 : IF T<1 THEN T=1
  96. 1040 GOTO 510
  97. 1050 PRINT IL$;CHR$(27);"@";
  98. 1060 INPUT"MS-DOS DEVICE NUMBER (8-30)";DV
  99. 1061 IF CD=DV THEN PRINT"MS-DOS AND CBM-DOS DEVICES MUST BE DIFFERENT!":GOTO1060 
  100. 1070 INPUT"MS-DOS DEVICE TYPE  (71/81)";X
  101. 1080 IF X=8 OR X=81 OR X=1581 THEN DT=255:DT$="1581" :ELSE DT=0:DT$="1571"
  102. 1090 POKE PK+16,DV : POKE PK+17,DT : SYS PK
  103. 1100 GOTO 520
  104. 1110 PRINT IL$;CHR$(27);"@";
  105. 1120 INPUT "CBM-DOS DEVICE NUMBER (0-30)";CD
  106. 1130 IF CD=DV THEN PRINT"MS-DOS AND CBM-DOS DEVICES MUST BE DIFFERENT!":GOTO1120 
  107. 1140 GOTO 520
  108. 1141 :
  109. 1142 REM ** COPY FILES **
  110. 1150 PRINT CHR$(147);"COPY FILES":PRINT:PRINT
  111. 1160 IF DL=0 THEN FC=0 : GOTO 1190
  112. 1170 FC=0 : FOR F=1 TO DL : IF MID$(DI$(F),6,1)="*" THEN GOSUB 1200
  113. 1180 NEXT F
  114. 1190 PRINT : PRINT"FILES COPIED =";FC;" - PRESS KEY"
  115. 1191 GETKEY A$ : GOTO 520
  116. 1200 FC=FC+1
  117. 1210 X$=MID$(DI$(F),19,8)+"."+MID$(DI$(F),29,3)
  118. 1220 CF$="":FORI=1TOLEN(X$):IF MID$(X$,I,1)<>" " THEN CF$=CF$+MID$(X$,I,1)
  119. 1230 NEXT
  120. 1231 IF RIGHT$(CF$,1)="." THEN CF$=LEFT$(CF$,LEN(CF$)-1)
  121. 1232 CF$=CF$+","+MID$(DI$(F),14,1)
  122. 1240 PRINT STR$(FC);". ";CHR$(34);CF$;CHR$(34);TAB(20);SZ(F)"BYTES";
  123. 1245 PRINT TAB(35);MID$(DI$(F),9,3)
  124. 1250 CL=CL(F) : LB=SZ(F) - INT(SZ(F)/65536)*65536
  125.  
  126. ╔ HAD TO USE A ─╧╨┼╬ STATEMENT HERE FOR DISK FILES BECAUSE THE REGULAR ╧╨┼╬
  127. STATMENT DOES NOT REDIRECT THE ─╙ AND ─╙$ PSEUDO-VARIABLES.  ┘OU'LL NOTICE
  128. THAT THE NON-DISK ╧╨┼╬ STATMENT BELOW HAS A SECONDARY ADDRESS OF 7.  ╘HIS IS
  129. TO PUT THE PRINTER INTO LOWERCASE MODE IF YOU ARE OUTPUTTING DIRECTLY TO IT.
  130. ┘OU CAN REPLACE THIS WITH A 5 (OR WHATEVER) IF YOU HAVE A SPECIAL INTERFACE
  131. TO AN ╔┬═-COMPATIBLE PRINTER AND YOU WANT TO PRINT DIRECTLY IN ┴╙├╔╔.  ╔N THIS
  132. CASE, YOU WOULD SELECT THE "┬╔╬" TRANSLATION MODE FOR THE FILE YOU ARE ROUTING
  133. DIRECTLY TO THE PRINTER.
  134.  
  135. 1260 IF CD>=8 THEN DOPEN#1,(CF$+",W"),U(CD) :ELSE IF CD<>0 THEN OPEN 1,CD,7
  136. 1265 IF CD<8 THEN 1288
  137. 1270 IF DS<>63 THEN 1288
  138. 1275 X$="Y" : PRINT "FILE EXISTS; OVERWRITE (Y/N)";
  139. 1280 CLOSE 1 : INPUT X$ : IF X$="N" THEN FC=FC-1 : RETURN
  140. 1285 SCRATCH(CF$),U(CD)
  141. 1286 DOPEN#1,(CF$+",W"),U(CD)
  142. 1288 IF CD<8 THEN 1320
  143. 1300 IF DS<20 THEN 1320
  144. 1310 PRINT CHR$(18)+"CBM DISK ERROR: "+DS$ : FC=FC-1 : CLOSE1 : RETURN
  145. 1320 POKE PK+19,CL/256 : POKE PK+18,CL-PEEK(PK+19)*256
  146. 1330 POKE PK+21,LB/256 : POKE PK+20,LB-PEEK(PK+21)*256
  147. 1340 TR=0 : IF MID$(DI$(F),9,1)="A" THEN TR=255
  148. 1346 X=1 : IF CD=0 THEN X=0
  149. 1350 SYS PK+6,TR,X
  150. 1355 RREG X,X,X,S : E=PEEK(PK+15)
  151. 1356 IF (S AND 1) THEN GOSUB 380 : FC=FC-1
  152. 1360 IF CD<>0 AND CD<8 THEN CLOSE1
  153. 1370 IF CD>=8 THEN DCLOSE#1 : IF DS>=20 THEN 1310
  154. 1380 RETURN
  155.  
  156.  
  157. 6. ╒╒┼╬├╧─┼─ ╞╔╠┼╙
  158.   
  159. ╚ERE ARE THE BINARY EXECUTABLES IN UUENCODED FORM.  ╘HE ├╥├32S OF THE TWO
  160. FILES ARE AS FOLLOWS:
  161.  
  162.    "LRR.128"    1106058594
  163.    "LRR.BIN"     460671650
  164.  
  165. ╘HE "LRR.128" FILE IS THE MAIN ┬┴╙╔├ PROGRAM AND THE "LRR.BIN" FILE CONTAINS
  166. THE MACHINE LANUGAGE DISK-ACCESSING ROUTINES.
  167.  
  168. BEGIN 640 LRR.128
  169. ═`1╤+'`╚`├╥!,25143$4@4─5$(%)%041%4┬╨@0┼─@0╒)!24<@0┼)50╘4╠(#,╨
  170. ═+5-%4"╘┘,┬╨@1─]2($,]($┴!0╘═)3─<@3─5434%'`%$<"╨`┌`(`<%`!#1++"
  171. ═*#$╪-┬─@(#╚@├╥`╩*┬!$149!54╤4($-"32╒$3╒,@1%))5─4@*┬╚`╧!╨9`$16
  172. ═╠├─┌1%2╥,"`@.┬`@├╥`╩*┬!-4╥╒$3╒,@1%))5─4╠(%194$4@*#`],34╫,2╨╥
  173. ═-34],34╪,2─`\┴╨:`(╠@1%:╥0╘0@╔╥!$5╦(╪.─14╠├`@.┬"/("╚╩($%,5$52
  174. ═3─%412!-4╥╒$3╒,@1%))5─4`^!╨;`#╚`&╤╘>`)─@╤╥@╤-#<╔.╥))3─┼424%,
  175. ═25╔)3─<╬+┬╪┬(#╚@╞0`╥'2@`_@(╨(#╚@4$╬╥╘2@┬.#`╨,"(╔`%╨=,@"+(,(╚
  176. ═4$╬╩.2╞╥╘2@┬0╘(┬*2"╧(,(╚4$╬╩,3`╔╠├$╙,2"╟(#8╨`)╨=-╨"9(─╤/041)
  177. ═3─<@34%#2$┼.12!,04┘'54%'12!23╒5424┘%4╥╪╬+┬(@.┬#^$2),4┼(╬0─┼.
  178. ═(┬╤5*$-$*0"_'3╨`┼╥!02┌╚╤-┬╤$5┬`┌()<@4$╬╩,3<╠1%0@.┬">(%!+`.,=
  179. ═1@"&(%0╠4┬╤"+$─╠020╠0╥╤$5"0╠1─╨─+$┼,)"╤8+%@─``(>4`"&($1))"@╤
  180. ═,├@╔+$-,*#$╥."─╠4╒╚╚,3(╪*0`╩'┼╚`┬╥!$5+(╥-34@╔╥!$5"2╥(├$╒.#$┬
  181. ═(#╦5($14)+(┬,34╫,2(`4!┘─`$9,)++'*#$┘*:╦'*#$╫*:╦'*#$╫*:╦'*#$╫
  182. ═*:╦'*#$╫*0!╘'╞╪`24╨─╠─9,)#╩!2;(╤╔#$┘.─┼,)+))3"2╩╤╥@╤-╥─┌@@!^
  183. ═'╟@`┬2`╒,#``┴!┌"`#╚`╔┴┌#`(\@*┬╚@3$]!1"!-4╥╒$3╒,@1$┼214-43╒)9
  184. ═("╚╩`,8>├`"9(─╤/041)3─<@1$┼214-43╒)9+┬╪╬(┬`┌()─`╓!┌6`)╪@4$╠@
  185. ═.┬">(%!+╩├,`╪1┌@`$1,╠├```!^╩`/╪)($),+$1#+$)(+%,@.┬!%╠╠(╚4$╬╩
  186. ═,34╔`!╚?═`"+("┴3(*\@,2─@╔╥"-(#,╪,"`┌((╪`.╤^^`)─┬4╘-!3─┘)3─<@
  187. ═1$┼214-43╒)9+┬╪╬(┬`┌()─`3!_(`$1"╠─),╩├(╒-╩╤"2`!='](`┬╥!$0[(╨
  188. ═(*<@,╙8╨`'╘?╫`"!($10╠─1"(*0@1$*╩,╙*╠*$1#╩╙$╔(*─@,╙(`╟1_╞`(╠@
  189. ═╨┬┴$4"╞╥,""╨(,(╚1%`╔╠├(╥.2"╟(#,╒,`"╫'_``┬╥#"*$10╩├$╥*2"╧(#(╘
  190. ═(*<@,╙4╨`,,?^@!$3+)$3*╚╤``<@!`%$)++)*"(@(╩╦$*$1,*2╨╙*:╚┬("`@
  191. ═("!!4╘,@(%-%42`@(┬`┌((\@*┬╚@1$5&055,5"!314╨╧5%(╧1┼0@*┬╚`,┬`.
  192. ═`4$─╠┬(┬(#╚@@4╞╥,*0╤,"`┌($$─╠─$─╩╠<╚╨┬┴$4*╔)*2─@.┬""`$╪@&`%!
  193. ═)++(*$$─+#@╔╩┬(@("*╩╥2┴!)"╨╙*0!;("(!╞2!$3#╠@020`;2`╠`40─╠─0─
  194. ═╩─$─╩┬(@("(`├┬`╓`4-,*$1,*;+"*$10╩├(╓*:╚╥-3:╠╨┬┴$4*╚╥-╥─`╬┬!`
  195. ═`5-:╠╠(╚1%"╩,├@╔╩├(╒-╩╙"*$10╩├(┘*:╚╓-34╙-╩╙"*$10╩├,╨*0#;($╚!
  196. ═1$──*$1,*;)$)*╦)*"(@("`@(╩╦$*%-:*2╨╓*0#╔(%0!4╒╚╚1$╨╔╠┼-:`/(@
  197. ═7@&"($10`/@@:`&.`/╪@<@$┌`",┴<╨&/("╚╩(%)%4$]25"!-4╥╒$3╒,@1$┼3
  198. ═2╥!%4┼)/4┬`╩*@!0(7╨!╞2#'*#$╪*3╠┬35,═1$]3($1)4╘╠@15)23╒(@(╥([
  199. ═╥┬├$*$4╔+#(╔.╨!](88!╞2`┬("@─(├╧**-(╚12─╠,╥─[(┬─╠(%!215-3($═%
  200. ═62╪┬.\<╚,30╓*0"+(9`!╚?─@020@.┬".`)$┴╞@$┌`*╨┴╞╨&/("╚╩(%-#4─5%
  201. ═3┬!(14%$24┘'("╚╩`.$┴╔`&9╤╥@╤-#<╔.╥)-4╥╒$158](├╧**,0╚1%8╔+#(╔
  202. ═.╥(@("`@35,═5%┼013╘┬.╘14)#╠``┬*╬`9─┬("`@($-"32╒$158](├╧**,0╚
  203. ═0╘0╔+#(╔.╔─`""*╪`8╪`#┬+"`3╚`*2+#`8\@*┬╚@4╘-2145.($9/3╒1)3─<@
  204. ═*┬╚`72+,`9─@24╨─.╥)$/41)4─5#5$]262`@33╒-4╥╒$158@($8]0╘)-+41%
  205. ═5┬!1/5%5250┬`(╘┬╒@&9(┼0]5$]'1╘╤%+4-/3%5-3┬╨@0╙╒#3╒!9+49)3$53
  206. ═+"`╦+╥╘@4$%'12([`),┬╪`&.`)─┬┌@$┌`+(┬┌╨&/("╚╩($╒!24╪@4─]55$┼.
  207. ═12`╩*@#`(╧0!5+(╤(#╚@0[(╨`,@┬_@%2╠├``╘┬((`╚╘@-#(╨``(├$@*9(").
  208. ═54╘@(%,@(%123┬`@5%┼0("!&24╤%3─%-12`@15┴4("!,14┘'5$@┬`#(├'`*9
  209. ═("(═+2╘@("╘@("╘═+2`@+2╘═("`═+2╘═+2╘═+2`@+2╘═("`═+2╘═+2╘┬`#╨├
  210. ═)@*-(#0╓,`!7(╙`"0╦)4╩├$╫(#╚@┬╥!"╠41,(*<@0╦)$3`!╨(╙╚"╞2!&3"0[
  211. ═.┬"+(%2╤1$╨@╔╥`╒.3``├2-$`╚$@2;)4(*0@0┬`┌()─@1$──*$─╔(#╚@@@"╓
  212. ═(╘╪"┬╥!$3+(╨(*<@╞2#'*#$╪*3╠┬/$┘/($9)3$53/┬([╤╥@╤-#8╔`,<├6`*+
  213. ═($1,╠├`@╔╥`╓-├``╫╥-┬`╔─@╥"┴)3"0╠4╩╚╒*3╧'*#$╪*3╠`]╥-╠`╔$@0┌╚╤
  214. ═((─@-├,╨+#8╘,"╨╓-3``&21╓`╔─@╔├0╔.\╚╚1$──*%2╩4┬─╠-2╨╙*2`┌((─@
  215. ═-├8╨`#╠─@`*9(*8╫*3╧**$1))"┴4╩┼(╔+#@╠-2─@.┬")(#8╓,`!?)(╚"╞2"╞
  216. ═,3(╔.\╚╚1$──*%2╩4┬─╠,3,╠-2─@.┬")(#8╓,`!╔))0"╚?─@020`─"2>`─╞╥
  217. ═╒"@┬1$╒&5$,╦+5$@(╩╦'*#$╙*:╚┬─1&='1.3(┬╤!)"─`╩┬2╚`╔─@╥"┴)3"0╠
  218. ═4╩╚╒*3═$220╚5*╔2*0"┌)+("┬╥!)╠├`@╔╥`╓,#``!┬6\`╔%)┬3<╓,"╨╤,#4╨
  219. ═+#$╤,3`╠.34╨+#$╤-3`╠,3`╨,"╨╤,#(╨+#<╙,"╨╪-├`╠.#8╨+#<╫,"╨╫.3`╠
  220. ═.#$╨+#@╙,"╨╪-3`╠-3`╨``╨┼╤@*0`!(┼╘`(┌`#,┼╘0*/("╚╩(%9!4─┼/55,@
  221. ═345.52!/4%1)3╘┘3("╚╩`%<┼╓@*9(,<╚,30╫*3╠┬2$%612!!3┬!!5╘533╘╒%
  222. ═($1!62╪┬`%╘┼┘`*``'<┼^`*-(#0╥,"`┌((╘@,30╨(#╚@┬2`╒,#``─24"`╒*╥
  223. ═4╩╠╤(#╚@┬╥!2╠╙`@╔╥!2╠─*╦5`";)0╨#┬2`╓,#``═246`╒*╥4╩╚╤(#╚@┬╥!4
  224. ═╩┼*╤0┬"╟(%*╥,`"_)2`#┬2`╓,#``╒╥4╩`╘.╥0┌╠╤(#╚@┬╥!#╠╙`@╔╥!#╠├(`
  225. ═╪24╘`╪─@-├`╨`/─┼/@-#╠─.╩,2`┌((╠@0[$╥(*<@0[(╨``,╞2`.)(#8╨,``9
  226. ═)┼(#4╦(╨(#╚@0[(╨(#╚@┬2`╓,#``*┬9<`╪╠@1$╥╥,""╟(#8╨,`!*)╞8#6+)4
  227. ═╩┼(@.┬"1($.╩,2"-(#@┘,"╨┘,3`╠.3,╨`&╚╞<`.9(,@╚24╨─+%*╩-2─[1$──
  228. ═*%@╔(#╚@┬2`╓,#``┼29┌`╪╠@╥┬┴$220╚6"─╠-┬╨╤*;(┬("(@╔╥!8)+(┬*┬(@
  229. ═.═4@6"2╥(┬`┬`*╪╞┴`/**$1))"┴8*2╨╓+#$╔╠┼@─(#╚@├@#=)╚╪#┬╥#**$1)
  230. ═)"┴8*2╨┘+#$╔╠┬)!(┬"╟(%@─╠┬)"24╪┬(#╦5(%@─╠┬)!4╘,┬`/8╞╞`/**$1)
  231. ═)"┴8*2╨┘+#,╔╠┼@─(#╚@├@`╞)┌(#┬╥#**$1))"┴8*2╨╤-"╨╤*;(┬4╥(@╔╥!8
  232. ═)+(┬4%)'(┬`┌╒2!8)+(┬4╘51(@!`)┌╨#╥┬┴$220╚6"─╠,30╠,╥╞╥6"0@.┬".
  233. ═`%$╟═@.+($1,╠├`@╔╥`╓,#``8"?``╪$@6+(╤(*0@1$╨`>"?*`┘$@0┌╚╤((╘@
  234. ═.#─╨+#─╤,"╨┘,╙``@"?4`╪(@6`"*)]╪#┬2`╒,├``╚╥?╚`╪╠@0╦)$3""╟(%2╥
  235. ═,2`┌((─@-3$╨`+8╟\@-4╠┼2╩,3@@.┬")(#4╤,`#┬)_╨#┬╥!4╠├$@╔╥!4╠─1,
  236. ═╩╥┴$3*╬╒*$1,╦3$╪*:╨╤."╞╩,2`┌((─@-3$╨`/╠╟!@14╠┼2╦,3@@.┬"+(%2╙
  237. ═,2"╟(%2╥,0`%*!`$┬2`╒,3``&┬@:!)─@24╨─.\<╚,├<╔.╥)`(├╠`0"@─!(4┬
  238. ═35,═1$]3($1%5─┼#12!.54╒"15(@*#@═,╙`╔(├═$5@"%*"4$┬╥!#1+)$5┬"╟
  239. ═()─┬35,═1$]3($%.1"!#0─╘═1$]3($1%5─┼#15,@35535"!"12!$249&15)%
  240. ═3┼0┴(├╩),3`╓,`"╩*"╪$┴2)-4╥╒$3╒,@1$5624-%(%194$4@("@╫,2\╪,2─┬
  241. ═.╒@`┌╥@╪!(╠@6+(╪(+`@6+(╪,2"╨(%┬╥,34╪,2"╟($14╠├(╒-3╔$5"2╥(├$╒
  242. ═.#$┬(#╦5($14╠├`┌1%0─╠┬(╤-3<╤(@`.*4($┼╥!02┌╚╤-┬╤$5┬`┌()<@4$╬╩
  243. ═,3<╠1%0@.┬">(%!+`!@╔3`2)(#4╥,``═*58$╞2!)3"0[╤╥@╥-╥─[(─`┬.╨!5
  244. ═*6`$┴2`┬0╘)-+41/4╥!$159)0╘4@3┼5-0─52("@╨+3,╨*2([0╘0`╞┬┼╩!(╠@
  245. ═0╘2╥1%8@╔╥"9(─╒3+41/4╥!!3─0@0╘)-+41/4╥!$159)0╘53($╒54╒0@0─4@
  246. ═1$┼&1─5214┘4(2(┌┬3$╤,├``╔"┼╘!(─@-3(╨`*╚╔=00┌`,$╔=@2/("╚╩($-/
  247. ═4%─@1─┼,15,@*┬╚`╫╥┼^!)─@╤╥@╤-#<╔.╥)#3╒!9($9)3$53(├╩9.╔─`^┬╞(
  248. ═!(╠@1$╥╥,""╟($9#╠├`@.┬")(#$╤.3``+╥╩2!$9#╠├`@.┬"!($:╥,2"─($1,
  249. ═(#╚@┬╥#**$1))"┴&*2╨╓+#$╔╠┬(╩(┬"╟((╘@,3(╨,``╫*╔╨$@┬!&`&,╩╔@29
  250. ═(#╚@╞2)&24╤%4╥!#3╒!)140@/2([1─,[(┬`═(%!215-3($═%62(`=2╩╟!*'┘
  251. ═($$─(#╚@┬2`╒,├``@2╩╨!$9#╠─9#╩├$`╩┬╩┌!%@─╠╠╚╚1$──*$8╔+#$┘+#@╔
  252. ═╩┬(╬(╩╦**$1))"┴&*2╨╥.2╨╙*0#┼*╠0$0╘8─╠┬(┬.╚%)╠├&─╨╥┴8)"─┌┬╥#*
  253. ═*%@─+$─╠,2╞╙╠2(@(┬"╟($-&)+)#1┬2╩╥┬┴8)"╤)+#$╔`.╠╩╙@2"`!0╦╙╨2+
  254. ═(,─╚0╘8─+#$╔╠┬(╬(┬"╟($-&)++(*$-&)"╙#*$-&)"╞╦,2─`,╥╧0!$-&)+)#
  255. ═1┬2╩(┬╨┬╩╠╚╚1$──*$8╔+#$╘+#$╔`&<╦╓`29(,0╚1─,╔.╥(╬("([╤╥@╙-"─[
  256. ═0╘8─.\<╚,╙0╔.┌,╥,"─[4╒╚╚1┬─┬0┼┼415,┬.╨"`*]╘$╞2"├,╙4╔.\╚╚1$──
  257. ═*$8╔+#─╠,╥─`╦╥╧┬!$-,╠─-,*$8╔(#╚@3$*╥4╒╚╚1┬─@╩╥"╒*%-:*$8╔╦38╒
  258. ═-3,╓*:╨╓-34╙-@#╔*^╨$┬╥!#1+&╥.""╟(/╪-(╙$╠*$-&)*╚┬+%<┬*2╤5*$-$
  259. ═*2`┌╒2"+($-$╠[$╨(*<@╟╥`╤+$-$+#<`^╥╧╤!(╠@0╘2╙.""╟(#$╥.#@`#╥╙╓
  260. ═!(╠@1%.╙╠38╙(*<@,3(╪.``^+/╠$6"2╥(┼─┬(#╚@╞2`┬1─┼,12!%6$┼35%,[
  261. ═($]615)74─┼412`╚62].*2([`&8╠``6@(#$@.┬"%(%@─(#╚@┬╥!8)+(┬3┬(@
  262. ═╔╥!&0[)&0┌╠╤(#╚@├@!╫+`4%\┬┴#1┬0╔+%4╚0╘0╔`)$╠!@7^#2,╤+"┴#1┬2╩
  263. ═(┬╤7(┬─╠52┴#1"─`╚╥╨(!8╠@0╘2╙.""╟(#$╙,├``═┬╨4!8╠@1%.╙,├`@╔╥`╤
  264. ═,╙(╨`.╨╠'@69(,<╚,3@╔╩┬)#0─╘@1$┼32╥!%4┼)/4├╚@(╩╔$4╥0@.┬!&0[)&
  265. ═0┌╠╤(#╚@╚#$@.┬".`!─═*`67(%!+╩├$┘+$-,╦3(╒-┬`┌()<@4$╬╩,3@╠0╘╥╦
  266. ═╨┬┴02┌╚╤.2╞╠,├4╓`$8═,@67(%!+╩├(╤+$╤"╦3(╒-┬`┌()<@4$╬╩,├`╠3$*╦
  267. ═╨┬┴02┌╚╥,2╞╠,├4╓`&╪═/`544╦(╨(#╚@┬╥#**$1))"┴&*2╨┘+#$╔╠┬)!(┬"╟
  268. ═(%12╠├(╒-0"%+4(%6+(╤(#╚@┬╥!#1+(╨(*<@6+(╨`)4═1@6>(%!+╩├8╠5%(╠
  269. ═6`"╤+4╠%_@─@6"╤8+%@╠4╥`┌($6╥╨┬┴02┌╚╤-2─`╘2╒,!8╠@*%,@╦╥`╤*2"╟
  270. ═((╘@,╙@╨(#╚@1─.╥1─.╦,0#╔+5`%┬╥!#1+.╤,""╧($-$╠╙@@╔╥"@,0`.+┼╚%
  271. ╔┬╥!#1+&╥.""╟(/╪/(╙$@.┬"+($13╠;(╥,""╟(#$╙,3``%"┘─!8╪`````
  272. `
  273. END
  274.  
  275. BEGIN 640 LRR.BIN
  276. ═`(!,68%,3╚),#╚3+@╨``````````````````````````````````````2*─`
  277. ═┴="═$(`@╠?^╔;╥"3_┌┼5(*├_)-`╨#┌─╨(*├_:""╚_╥30,`(88*─%├0^`.&"═
  278. ═`-╒)$(╘`╫6"╔""╨-╫/#[8"!@@*╪,╫"!7@(╔@╩1╚@*("0`6`@╦╧\─╘##.&"!'
  279. ═_╥╨-╫"!7@"!╚@(╘/@"─/╥0*╨):``(&┬`╞2*`╥,`&─/48╩0@@*("0`6"╔`2╨1
  280. ═@#`"╩00@╩/\@╦╧]@2(╚╔`0╚*"@╚╠$8`0`──0("┬`─`%@:""╚_┌─!(*├_╩0─@
  281. ═╩/\@╦╧]╪&"!'_╥╨-╫"!7@*─╪╚(6%`╚0#╩0"%!"╨1@#`#(!.!("╬!╠`╟╞!*4$
  282. ═╥0╞0┌╤┴88*─╪┴0*╞!!┬╔┴7╘┬@84#8``($`8.!`╨""┬!╚@(╘/@"─/╥0*0`6"┬
  283. ═`╩``╩0@╠#=╙╨^┌╘`╫4─0├0#=╦0╙<─0+(╘.╟╞`\╦0┘&"╔#╚╘`_┌╟_├2"`├2&`
  284. ═&&#-((#0$.╨┴@-`+┬)@*&&╞%╩*─╪&&"-((".(8"$!2"^@)`9╦0^`*0_)"_`"
  285. ═.&`@<╪"═(("╬(8"─!9#;8*╘@@*╪┴@*0%3&┬!╚╧_╚..─2╠/╩($/<8:1+(╩(╔@
  286. ═(*┌!╚@#`"9`(2)├╔":┴╚╚@'(8(8+(,"!┴0┬&"80*╔0┬╞":0*(&┬!─`%@┴0╥$
  287. ═#:("╚`"╤#)$&╥+$,─0;(╘/3╞#>8'╥═#═┘@╩┼"╠─*─!*╔`84*┘@╞┼"<─"─`:╔
  288. ═`(4)┘@├&"]"[&&`╪┌0*╨`8┬╬%╚#@`?`'"╚0')@>─!╤┴═'("0`<┬┬.(8&╚╔>&
  289. ═!┌╪6@$╙3@:─.├0#_╩0"@`"#`@2!╚@9`!8(4"┴`.@#;$"├1:`╥0.0!┌─\├0^`
  290. ═.&"@$+$"╥0+0\:`6╠0*-%╪#)!+#╞╚!&╤`╚╘9@,╞!╠-═*2─╔*├1┬`╚!.╤`╚╘:
  291. ═@,┬╤`╚╘;@*`8╠0+)"="_╚!╩╤`╠─"╘+>@#╦$"╥0'0╦┌╘7@`╚8:0&-'8`8;1┬`
  292. ═├1╥`╦1╩`╦!╬`..╘<@+`!┬(╘>@(╨?@*╘6@,─"╘`9.'╪!╬'╚"╔.*";┴0:$!┌─!
  293. ═╚`"╬%╪`@╘╪&0`6"╔.*"┴┴0:$!┌╘=@*``╦┴┬`(-.!─`%@╩3┬@╚:╪9@!┴@┴06$
  294. ═`╘8#:╚4$╔@,*)@,8902%`╚╔┼`╪4#&*4":3┬%`╩4#:9╬%`┌`"╠0*9!@"($/┬┼
  295. ═!2─!╘`┬┼!╥─/╩*4&8*4'╚@1&"&╦*╘/╩─"&"┼9*1┼("6"─`%@╩3┬@┼╪5@┴&&╔
  296. ═`(5┬╦1:`"╚5├╔62─92`┼@╪5─┴&7)_]`@╨`_0'*╘4@(5┬╩0&╬%╚#@`?`"╩0,═
  297. ═%8#0!:╪4@/`"┴6,@╧╚-@╔@_0`┴┴@(,╟_─`2-#╪!@╩?^╞8]`"╔6*%9╩``╠6`─
  298. ═#┴`&╩╦╘╪┴/`#(-+_╥,1╞╘.╨8╔6!┼9╚5@─`+╞83┬┼8╬5╞┴6*╨`╠9├╔6(%8]#$
  299. ═(,╙_&&"@#╚╨`_╪4.┴@^═$╚"╠$╪"%9(1┼3"╩$(&^#─`%@╔63)_]#╘╔67)#]#╬
  300. ═&&```````````!0)#0"3`````````````````````````"`┴(┬,─)28╟*"─╩
  301. ═*╥╨═+┬\╨,3(╙-#4╓-╙@┘.├╠\/3╪_0,'"╨\3%╤╠?(╥<╦+╙,╫.╙]#1╘═/4╒=;7
  302. ═╓-╟:6╒╤=7┼_`04)#1$5&1╘┴)2─═,34┘/4%%24╒155┼=865╦;╫-╫>╫╨``````
  303. ═````````````````````````````````````````````````````````````
  304. ═````````````````````````````````````````````````````````````
  305. ┴````````````````````````````````````````````````
  306. `
  307. END
  308. --
  309.  
  310. 7. ┬╔┬╠╔╧╟╥┴╨╚┘
  311.  
  312. ╘HE FOLLOWING WORKS WERE CONSULTED IN CREATING THIS ARTICLE:
  313.  
  314. [1] ╩IM ┬UTTERFIELD, "╩IM ┬UTTERFIELD'S ├OMPLETE ├128 ═EMORY ═AP",
  315. ╙HOWN 88%, PRESS <╙╨┴├┼> FOR MORE, 'Q' TO QUIT, OR 'H' FOR HELP
  316.     _╘HE_╘RANSACTOR_, ╓OLUME 7, ╔SSUE 01, ╩ULY 1986 (┴ ═UST!).
  317.  
  318. [2] ├OMMODORE ┬USINESS ═ACHINES, _├OMMODORE_1571_─ISK_─RIVE_╒SER'S_╟UIDE_,
  319.     ├┬═, 1985.
  320.  
  321. [3] ╙OME PROGRAM CALLED "MSDOS-TO-128" INCLUDED WITH "CS-DOS" BY
  322.     ═. ╟-SOMETHING.  ╧RIGINALLY PUBLISHED IN ├╧═╨╒╘┼!'S ╟AZZETTE, ╔ THINK.
  323.  
  324. [4] ├OMMODORE ┬USINESS ═ACHINES, _├OMMODORE_128_╨ROGRAMMER'S_╥EFERENCE_╟UIDE_,
  325.     ┬ANTAM ┬OOKS, 1986.
  326.  
  327. [5] _╘HE_╘RANSACTOR_, ╓OLUME 4, ╔SSUE 05 ("╘HE ╥EFERENCE ╔SSUE"), ═AY 1983.
  328.  
  329. =============================================================================
  330. ╬EXT ╔SSUE:       
  331.  
  332. ╠EARNING ═ACHINE ╠ANGUAGE - ╨ART 5
  333.  
  334. ╘HE ╙╨┴├┼ ╔╬╓┴╙╔╧╬ IS CONTINUED WITH THE DESIGN AND IMPLEMENTATION OF THE
  335. PLAYER AND ALIEN ANIMATION ALONG WITH A LOOK AT DEVICE SCANNING FOR THE 
  336. 1351 MOUSE, JOYSTICK AND KEYBOARD.
  337. ╙HOWN 92%, PRESS <╙╨┴├┼> FOR MORE, 'Q' TO QUIT, OR 'H' FOR HELP
  338.  
  339. ╘HE 1351 ═OUSE ─EMYSTIFIED
  340.  
  341. ╞INALLY! - ┴FTER 2 DELAYS, THIS ARTICLE WILL EXPLAIN HOW THE 1351 MOUSE
  342. WORKS AS WELL AS PROVIDE A EASY TO USE INTERFACE IN MACHINE LANGUAGE FOR
  343. BOTH BASIC AND MACHINE LANGUAGE PROGRAMMERS.  ┴N EXAMPLE PROGRAM WILL BE
  344. GIVEN TO ILLUSTRATE BOTH THE 1351 MOUSE AND THE MULTI-TASKING SYSTEM.
  345.  
  346. ═ULTI-TASKING ON THE ├=128
  347.  
  348. ┴ RUDIMENTARY MULTI-TASKING SYSTEM WILL BE IMPLEMENTED FOR TASKS TO RUN
  349. CON-CURRENTLY WITH EACH OTHER. ╫HILE INTENDED FOR MACHINE LANGUAGE PROGRAMMERS
  350. SOME DISCUSSION OF HOW TO USE THIS WITHIN BASIC WILL BE GIVEN SO THAT MORE THAN
  351. ONE BASIC / ML PROGRAM CAN BE RUN AT A TIME. ┴N EXAMPLE PROGRAM WILL BE GIVEN TO 
  352. ILLUSTRATE BOTH THE 1351 MOUSE AND THE MULTI-TASKING SYSTEM.
  353.  
  354. ╙TRETCHING SPRITES
  355.  
  356. ┘OU MIGHT HAVE HEARD THAT IT IS POSSIBLE TO EXPAND SPRITES TO MORE THAN TWICE
  357. THEIR ORIGINAL SIZE. ┬UT THERE IS NO NEED TO EXPAND ALL OF THEM EQUALLY. ╘HIS
  358. ARTICLE WILL EXAMINE ON HOW TO EXPAND THEM 2,3 OR MORE MULTIPLES OF THEIR 
  359. ORIGINAL SIZE.
  360.  
  361. ╠╔╘╘╠┼ ╥┼─ ╫╥╔╘┼╥: ═╙-─╧╙ FILE WRITER FOR THE 128 AND 1571/81 DRIVES.
  362.  
  363. ╘HIS ARTICLE WILL EXTEND THE ╠ITTLE ╥ED ╥EADER PROGRAM TO BE ABLE TO WRITE
  364. ├OMMODORE-─╧╙ FILES TO AN ═╙-─╧╙ DISK.
  365. =============================================================================
  366.  
  367. -- 
  368.  
  369. - ├RAIG ╘AYLOR   ⁿⁿ ╙TANDARD ─ISCLAIMER ┴PPLIES (OF COURSE!)
  370. DUCK@PEMBVAX1.PEMBROKE.EDU (╨EMBROKE ╙TATE ╒NIVERSITY)
  371.  
  372.